<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>And forever has no end. - And forever has no end.</title><meta name="author" content="Zero"><meta name="copyright" content="Zero"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="And forever has no end.">
<meta property="og:url" content="http://yamtg.gitee.io/index.html">
<meta property="og:site_name" content="And forever has no end.">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://yamtg.gitee.io/img/q2.jpg">
<meta property="article:author" content="Zero">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://yamtg.gitee.io/img/q2.jpg"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="http://yamtg.gitee.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: undefined,
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
    },
    fancybox: {
      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isanchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = { 
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2021-03-11 10:36:42'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    })(window)</script><meta name="generator" content="Hexo 5.4.0"></head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="author-avatar"><img class="avatar-img" src="/img/q2.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">14</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">25</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">4</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> Categories</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> List</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/music/"><i class="fa-fw fas fa-music"></i><span> Music</span></a></li><li><a class="site-page" href="/movies/"><i class="fa-fw fas fa-video"></i><span> Movie</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> Link</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('/img/q12.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">And forever has no end.</a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> Categories</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> List</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/music/"><i class="fa-fw fas fa-music"></i><span> Music</span></a></li><li><a class="site-page" href="/movies/"><i class="fa-fw fas fa-video"></i><span> Movie</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> Link</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">And forever has no end.</h1></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/01/06/2020-01-06/" title="Web Filter 过滤器">     <img class="post_bg" src="/img/q1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Web Filter 过滤器"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/01/06/2020-01-06/" title="Web Filter 过滤器">Web Filter 过滤器</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-01-06T01:03:36.000Z" title="发表于 2020-01-06 09:03:36">2020-01-06</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">Web Filter 过滤器基本过滤器Spring的Filter，基本上都是继承OncePerRequestFilter或GenericFilterBean 

OncePerRequestFilter顾名思义，能够确保在一次请求只通过一次filter，而不需要重复执行。
GenericFilterBean是javax.servlet.Filter接口的一个基本的实现类GenericFilterBean将web.xml中filter标签中的配置参数-init-param项作为bean的属性GenericFilterBean可以简单地成为任何类型的filter的父类GenericFilterBean的子类可以自定义一些自己需要的属性GenericFilterBean，将实际的过滤工作留给他的子类来完成，这就导致了他的子类不得不实现doFilter方法GenericFilterBean不依赖于Spring的ApplicationContext，Filters通常不会直接读取他们的容器信息（ApplicationContext concept）而是通过访问spring容器（Spring ro ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/01/06/2018-03-16/" title="Spring Cloud 标准架构图">     <img class="post_bg" src="/img/q5.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Spring Cloud 标准架构图"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/01/06/2018-03-16/" title="Spring Cloud 标准架构图">Spring Cloud 标准架构图</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-01-06T01:00:56.561Z" title="发表于 2020-01-06 09:00:56">2020-01-06</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Spring-Cloud/">Spring Cloud</a></span></div><div class="content">
</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/01/06/2018-06-20/" title="北京最新地铁坐标（高德地图）">     <img class="post_bg" src="/img/q1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="北京最新地铁坐标（高德地图）"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/01/06/2018-06-20/" title="北京最新地铁坐标（高德地图）">北京最新地铁坐标（高德地图）</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-01-06T01:00:56.561Z" title="发表于 2020-01-06 09:00:56">2020-01-06</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%9D%82%E9%A1%B9/">杂项</a></span></div><div class="content">





地铁
站点
拼音全拼
拼音首批
longitude
latitude



1号线
苹果园
pinguoyuan,pingguoyuan
pgy
39.926727
116.177388


1号线
古城
gucheng
gc
39.90745
116.190337


1号线
八角游乐园
bajiayouleyuan,bajiayouyueyuan,bajiaoyouyueyuan,bajiaoyouleyuan,bajueyouleyuan,bajueyouyueyuan
bjyly,bjyyy
39.907442
116.212684


1号线
八宝山
babaoshan
bbs
39.90744
116.235948


1号线
玉泉路
yuquanlu
yql
39.907433
116.252888


1号线
五棵松
wukesong
wks
39.907456
116.273987


1号线
万寿路
wanshoulu,moshoulu
msl,wsl
39.907474
116.294765


1号线
公主坟
gongzhufen
gzf
39.90 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2019/04/09/2019-04-09/" title="设计模式">     <img class="post_bg" src="/img/q5.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="设计模式"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/04/09/2019-04-09/" title="设计模式">设计模式</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-04-09T05:56:26.000Z" title="发表于 2019-04-09 13:56:26">2019-04-09</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">创建型模式工厂模式类图


代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687package com.designPatterns.createPatterns;/** * 设计模式之创建型模式 * 工厂模式 * * @author zero */public class FactoryPattern &#123;    public interface Telephone &#123;        /**         * 打电话         */        void call();        /**         * 发短信         */        void sms();    &#125;    public static class IPhone implements  ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2019/04/03/2019-04-03/" title="Zookeeper 选举">     <img class="post_bg" src="/img/q6.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Zookeeper 选举"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/04/03/2019-04-03/" title="Zookeeper 选举">Zookeeper 选举</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-04-03T01:49:52.000Z" title="发表于 2019-04-03 09:49:52">2019-04-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">LeaderLatchLeaderLatch会和其它使用相同latch path的其它LeaderLatch交涉，然后随机的选择其中一个作为leader。
类似JDK的CountDownLatch， LeaderLatch在请求成为leadership时有block方法：
123456789public void await()          throws InterruptedException,                 EOFExceptionCauses the current thread to wait until this instance acquires leadershipunless the thread is interrupted or closed.public boolean await(long timeout,                     TimeUnit unit)             throws InterruptedException

一旦不使用LeaderLatch了，必须调用close方法。 如果它是leader ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2019/03/29/2019-03-29/" title="HashMap 散列hash算法">     <img class="post_bg" src="/img/q1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="HashMap 散列hash算法"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/03/29/2019-03-29/" title="HashMap 散列hash算法">HashMap 散列hash算法</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-03-29T01:41:44.000Z" title="发表于 2019-03-29 09:41:44">2019-03-29</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">HashMap 散列hash算法HashMap中要找到某个元素，需要根据key的hash值来求得对应数组中的位置。如何计算这个位置就是hash算法。前面说过hashmap的数据结构是数组和链表的结合，所以我们当然希望这个hashmap里面的元素位置尽量的分布均匀些，尽量使得每个位置上的元素数量只有一个，那么当我们用hash算法求得这个位置的时候，马上就可以知道对应位置的元素就是我们要的，而不用再去遍历链表。 
所以我们首先想到的就是把hashcode对数组长度取模运算，这样一来，元素的分布相对来说是比较均匀的。但是，“模”运算的消耗还是比较大的，能不能找一种更快速，消耗更小的方式那？java中时这样做的， 
123static int indexFor(int h, int length) &#123;      return h &amp; (length-1);  &#125;  

首先算得key得hashcode值，然后跟数组的长度-1做一次“与”运算（&amp;）。看上去很简单，其实比较有玄机。比如数组的长度是2的4次方，那么hashcode就会和2的4次方-1做“与”运算。 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2019/03/28/2019-03-28-1/" title="AbstractQueuedSynchronizer">     <img class="post_bg" src="/img/q4.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="AbstractQueuedSynchronizer"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/03/28/2019-03-28-1/" title="AbstractQueuedSynchronizer">AbstractQueuedSynchronizer</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-03-28T05:56:39.000Z" title="发表于 2019-03-28 13:56:39">2019-03-28</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">同步器




</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2019/03/28/2019-03-28/" title="TwinsLock 自定义锁">     <img class="post_bg" src="/img/q3.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="TwinsLock 自定义锁"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/03/28/2019-03-28/" title="TwinsLock 自定义锁">TwinsLock 自定义锁</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-03-28T02:20:01.000Z" title="发表于 2019-03-28 10:20:01">2019-03-28</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980package com.java8.lock;import java.util.concurrent.locks.AbstractQueuedSynchronizer;/** * 实现有限资源锁（2个资源）,同只能有两个线程在运行，其余线程在堵塞等待 * AbstractQueuedSynchronizer DEMO * @author zero */public class TwinsLock &#123;    public final Syns syns = new Syns(2);    private static final class Syns extends AbstractQueuedSynchronizer &#123;        public Syns(int c ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2019/03/25/2019-03-25/" title="ThreadPoolExecutor 源码分析">     <img class="post_bg" src="/img/q6.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ThreadPoolExecutor 源码分析"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/03/25/2019-03-25/" title="ThreadPoolExecutor 源码分析">ThreadPoolExecutor 源码分析</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-03-25T09:09:01.000Z" title="发表于 2019-03-25 17:09:01">2019-03-25</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">线程池的必要性1、线程是稀缺资源，使用线程池可以减少创建和销毁线程的次数，每个工作线程都可以重复使用。2、可以根据系统的承受能力，调整线程池中工作线程的数量，防止因为消耗过多内存导致服务器崩溃。
线程池的创建123456789101112131415161718192021222324252627282930313233343536373839404142434445464748/**    * Creates a new &#123;@code ThreadPoolExecutor&#125; with the given initial    * parameters.    *    * @param corePoolSize the number of threads to keep in the pool, even    *        if they are idle, unless &#123;@code allowCoreThreadTimeOut&#125; is set    * @param maximumPoolSize the maximum number ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2019/03/23/2019-03-23/" title="最大堆">     <img class="post_bg" src="/img/q6.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="最大堆"></a></div><div class="recent-post-info"><a class="article-title" href="/2019/03/23/2019-03-23/" title="最大堆">最大堆</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2019-03-23T03:47:47.000Z" title="发表于 2019-03-23 11:47:47">2019-03-23</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JAVA/">JAVA</a></span></div><div class="content">MaxHeap 最大堆（大顶堆）1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package com.java8.sort;/** * 最大堆 * @author zero */public class MaxHeap &#123;    private int[] data;    private int capacity;    public MaxHeap(int[] array) &#123;        this.data = new int[array.length + 1];        this.capacity = array.length;        for (int i = 0; i &lt; array.length; i++) &#123;            data[i + 1] = array[i];        &#125;        for (int p ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="card-info-avatar is-center"><img class="avatar-img" src="/img/q2.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/><div class="author-info__name">Zero</div><div class="author-info__description"></div></div><div class="card-info-data"><div class="card-info-data-item is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">14</div></a></div><div class="card-info-data-item is-center"><a href="/tags/"><div class="headline">标签</div><div class="length-num">25</div></a></div><div class="card-info-data-item is-center"><a href="/categories/"><div class="headline">分类</div><div class="length-num">4</div></a></div></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">This is my Blog</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2020/01/06/2020-01-06/" title="Web Filter 过滤器"><img src="/img/q1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Web Filter 过滤器"/></a><div class="content"><a class="title" href="/2020/01/06/2020-01-06/" title="Web Filter 过滤器">Web Filter 过滤器</a><time datetime="2020-01-06T01:03:36.000Z" title="发表于 2020-01-06 09:03:36">2020-01-06</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/01/06/2018-03-16/" title="Spring Cloud 标准架构图"><img src="/img/q5.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Spring Cloud 标准架构图"/></a><div class="content"><a class="title" href="/2020/01/06/2018-03-16/" title="Spring Cloud 标准架构图">Spring Cloud 标准架构图</a><time datetime="2020-01-06T01:00:56.561Z" title="发表于 2020-01-06 09:00:56">2020-01-06</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/01/06/2018-06-20/" title="北京最新地铁坐标（高德地图）"><img src="/img/q1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="北京最新地铁坐标（高德地图）"/></a><div class="content"><a class="title" href="/2020/01/06/2018-06-20/" title="北京最新地铁坐标（高德地图）">北京最新地铁坐标（高德地图）</a><time datetime="2020-01-06T01:00:56.561Z" title="发表于 2020-01-06 09:00:56">2020-01-06</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2019/04/09/2019-04-09/" title="设计模式"><img src="/img/q5.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="设计模式"/></a><div class="content"><a class="title" href="/2019/04/09/2019-04-09/" title="设计模式">设计模式</a><time datetime="2019-04-09T05:56:26.000Z" title="发表于 2019-04-09 13:56:26">2019-04-09</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2019/04/03/2019-04-03/" title="Zookeeper 选举"><img src="/img/q6.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Zookeeper 选举"/></a><div class="content"><a class="title" href="/2019/04/03/2019-04-03/" title="Zookeeper 选举">Zookeeper 选举</a><time datetime="2019-04-03T01:49:52.000Z" title="发表于 2019-04-03 09:49:52">2019-04-03</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
            <i class="fas fa-folder-open"></i>
            <span>分类</span>
            
            </div>
            <ul class="card-category-list" id="aside-cat-list">
            <li class="card-category-list-item "><a class="card-category-list-link" href="/categories/JAVA/"><span class="card-category-list-name">JAVA</span><span class="card-category-list-count">10</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Spring-Cloud/"><span class="card-category-list-name">Spring Cloud</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%9D%82%E9%A1%B9/"><span class="card-category-list-name">杂项</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E9%9A%8F%E7%AC%94/"><span class="card-category-list-name">随笔</span><span class="card-category-list-count">2</span></a></li>
            </ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/AbstractQueuedSynchronizer/" style="font-size: 1.23em; color: #999ea6">AbstractQueuedSynchronizer</a> <a href="/tags/HashMap/" style="font-size: 1.1em; color: #999">HashMap</a> <a href="/tags/JAVA/" style="font-size: 1.5em; color: #99a9bf">JAVA</a> <a href="/tags/POI/" style="font-size: 1.1em; color: #999">POI</a> <a href="/tags/Spring/" style="font-size: 1.1em; color: #999">Spring</a> <a href="/tags/Spring-Cloud/" style="font-size: 1.1em; color: #999">Spring Cloud</a> <a href="/tags/Zookeeper/" style="font-size: 1.1em; color: #999">Zookeeper</a> <a href="/tags/%E5%8C%97%E4%BA%AC%E5%9C%B0%E9%93%81/" style="font-size: 1.1em; color: #999">北京地铁</a> <a href="/tags/%E5%90%8C%E6%AD%A5%E5%99%A8/" style="font-size: 1.23em; color: #999ea6">同步器</a> <a href="/tags/%E5%9D%90%E6%A0%87/" style="font-size: 1.1em; color: #999">坐标</a> <a href="/tags/%E5%A0%86/" style="font-size: 1.1em; color: #999">堆</a> <a href="/tags/%E6%8E%92%E5%BA%8F/" style="font-size: 1.1em; color: #999">排序</a> <a href="/tags/%E6%95%A3%E5%88%97hash%E7%AE%97%E6%B3%95/" style="font-size: 1.1em; color: #999">散列hash算法</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 1.1em; color: #999">数据结构</a> <a href="/tags/%E6%A8%A1%E5%BC%8F/" style="font-size: 1.1em; color: #999">模式</a> <a href="/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/" style="font-size: 1.1em; color: #999">源码分析</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 1.23em; color: #999ea6">算法</a> <a href="/tags/%E7%BA%BF%E7%A8%8B/" style="font-size: 1.37em; color: #99a4b2">线程</a> <a href="/tags/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/" style="font-size: 1.1em; color: #999">线程安全</a> <a href="/tags/%E7%BA%BF%E7%A8%8B%E6%B1%A0/" style="font-size: 1.1em; color: #999">线程池</a> <a href="/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" style="font-size: 1.23em; color: #999ea6">设计模式</a> <a href="/tags/%E9%80%89%E4%B8%BE/" style="font-size: 1.1em; color: #999">选举</a> <a href="/tags/%E9%94%81/" style="font-size: 1.23em; color: #999ea6">锁</a> <a href="/tags/%E9%9A%8F%E5%BF%83%E6%89%80%E6%AC%B2/" style="font-size: 1.23em; color: #999ea6">随心所欲</a> <a href="/tags/%E9%AB%98%E5%B9%B6%E5%8F%91/" style="font-size: 1.1em; color: #999">高并发</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/01/"><span class="card-archive-list-date">一月 2020</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2019/04/"><span class="card-archive-list-date">四月 2019</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2019/03/"><span class="card-archive-list-date">三月 2019</span><span class="card-archive-list-count">6</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2017/12/"><span class="card-archive-list-date">十二月 2017</span><span class="card-archive-list-count">3</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">14</div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">16.8k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2021-03-11T02:36:42.644Z"></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2021 By Zero</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script>var preloader = {
  endLoading: () => {
    document.body.style.overflow = 'auto';
    document.getElementById('loading-box').classList.add("loaded")
  },
  initLoading: () => {
    document.body.style.overflow = '';
    document.getElementById('loading-box').classList.remove("loaded")

  }
}
window.addEventListener('load',preloader.endLoading())</script><div class="js-pjax"></div><script defer="defer" id="ribbon" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="true" data-click="true"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>